/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.insta.browser.service.history;

import fr.insta.browser.domain.IHistoryEntry;
import java.util.Iterator;

/**
 * Service de gestion d'historique, avec gestion d'occurence
 *
 * @author Maarek
 * @version $Id: $Id
 */
public interface IHistorySingleTabService extends IHistoryService {

    /**
     * Récupère l'occurence courante
     *
     * @return a {@link fr.insta.browser.domain.IHistoryEntry} object.
     */
    IHistoryEntry getCurrent();

    /**
     * Il y a t-il une occurence suivante
     *
     * @return Vrai si il y une occurence suivante
     */
    boolean hasNext();

    /**
     * Il y a t-il une occurence précédente
     *
     * @return Vrai si il y une occurence précédente
     */
    boolean hasPrev();

    /**
     * Bouge l'occurence vers le suivant
     *
     * @return l'entrée suivante
     */
    IHistoryEntry next();

    /**
     * Bouge l'occurence vers le précédent
     *
     * @return l'entrée précédente
     */
    IHistoryEntry prev();

    /**
     * Renvoi un iterator partant de l'occurence courrante vers la dernière
     * occurence
     *
     * @return l'iterator
     */
    Iterator<IHistoryEntry> iteratorOfCurrentToEnd();

    /**
     * Renvoi un iterator partant de l'occurence courrante vers la première
     * occurence
     *
     * @return a {@link java.util.Iterator} object.
     */
    Iterator<IHistoryEntry> iteratorOfCurrentToBegin();

    /**
     * Déplace l'occurence vers l'entrée en paramètre
     *
     * @param entry a {@link fr.insta.browser.domain.IHistoryEntry} object.
     */
    public void moveCurrentTo(IHistoryEntry entry);
}
